package com.piece.module.file.util.excel;

import com.alibaba.excel.support.ExcelTypeEnum;
import lombok.Builder;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import java.util.List;

/**
 * Excel读取、导出参数
 */
@Data
@Slf4j
@Builder
public class ExcelParam {

    public static final String DEFAULT_SHEET_NAME = "Sheet";

    @Builder.Default
    private ExcelTypeEnum excelType = ExcelTypeEnum.XLSX;

    @Builder.Default
    private String sheetName = null;

    /**
     * 批量处理数据数
     */
    @Builder.Default
    private int batchCount = 100;

    /**
     * 表头
     */
    private List<List<String>> headList;

    /**
     * 数据项
     */
    private List<?> data;

    /**
     * 是否需要转换数据
     */
    @Builder.Default
    private boolean convert = true;

    /**
     * 转换的类型
     */
    private Class convertType;

    /**
     * 读取数据起始行
     */
    @Builder.Default
    private int readStartRow = 1;

    /**
     * 读取数据结束行
     */
    @Builder.Default
    private int readEndRow = 0;

    /**
     * 模板文件，路径和名称
     */
    private String templateFile;

    /**
     * 填充内容
     */
    private Object fillData;

    /**
     * 填充List数据时，是否在最后创建新行
     * <small>设置为true时，会在内存中处理数据容易溢出</small>
     */
    @Builder.Default
    private boolean forceNewRow = false;
}
